Mobile devices are becoming the most indispensable computing device a person needs. With the advent of smart phones, the mobile phone has become as powerful as any ordinary desktop computer in terms of the applications it can run and its computing power. People are now using their mobile phones not just for calling and sending messages but also for browsing the Internet, playing games, listening to music and various other applications. These applications are normally present in a marketplace, where the user can select the application and install it on the mobile phone or a computer. Everyday a lot of mobile based applications are being developed and are being populated in the marketplace.
One problem about this though is that, developing any type of computer application, whether it is for the desktop computer or mobile device is quite difficult. It still takes a large amount of skill and familiarity with how the framework is used before a person can create a decent amount of code for a simple application. Even setting up the programming environment is a complex task, let alone, trying to figure out how to use the APIs, compiling, running and deploying the application on the actual device. Other things that makes developing applications for mobile devices more difficult as compared to desktop applications are factors such as device limitations (e.g. screen size, computing power, power consumption), different operating systems for mobile devices, different data representation and additional device capabilities (e.g. Bluetooth, Wifi, GPS, Camera enabled) which are not standard to all devices and therefore should be considered when developing a uniform application that can be run on different mobile devices. The artifacts that have been captured for developing web applications cannot be reused and hence substantial effort has to be put for capturing the same requirements into the frameworks for developing mobile applications. In mobile technology platforms, there are regular updates to the technologies. So, the tool or framework has to be changed according to the updates in the target platform and hence maintaining such changes in the tool/framework is difficult. Such tools/frameworks may emit bloated or inefficient code which are against coding standards. Also such tools/frameworks involve substantial learning curve since the mobile application developers may be familiar with such tools platforms is cumbersome.
Further, most of the mobile applications have to be supported on different platforms. Development process for supporting multiple platforms requires more effort and time. Due to increasing requirements managing changes for the same mobile application across different platforms. Moreover, the market does not allow a strategy that restricts app supply to a single platform. Therefore multi-platform app development is a very time and cost-intensive necessity. It demands that apps have to be built more or less from scratch for each and every noteworthy target platform.
Various cross-platform approaches are used when an application has to be developed for several platforms. Popular frameworks for cross-platform app development are currently either based on Web technology or use native components in an interpreting environment. Web-based approaches result in apps that more or less look and behave like Web sites. They are rather mature, but lack a native look & feel. The second achieve an (almost) native look & feel, but all suchlike approaches have severe shortcomings with respect to abstraction level, performance, feature completeness, or bugs.
One of the recent approach which is being used in this field is Model-driven development (MDD) approach. MDD is an approach used in creating complex software systems by first creating a high-level, platform independent model of the system, and then generating a specific code based on the model to the target platform. MDD would greatly help in easing the development process of application development for mobile platforms since it would address the problem of redundancy of tasks in developing an application that would run on several platforms.
Some other researches which applies MDD to ease software development are: the Simple Mobile Services project which applies MDD to the creation of mobile services, PervML which aims to create pervasive systems through the application of MDD, the Multimedia Modeling Language (MML) which is designed for interactive multimedia applications, and other researches applies modeling concepts for creating platform independent user interfaces.